阅读指南
上一节我们学习了Temperature如何通过调整概率分布控制AI的创造力。本节将探讨另一种控制采样的方法——Top-p(核采样),以及它与Temperature的关键区别。
Temperature不是唯一控制大模型输出风格的手段。
Top-p和Temperature不同,它不是调整整个概率分布,而是只从"累积概率达到p"的词中采样。
听起来抽象?
假设模型给出了这样的概率分布:
词 概率 累积概率
─────────────────────────────
真好 35% 35%
不错 25% 60%
很好 20% 80%
还行 10% 90% ← 达到Top-p=0.9的阈值
一般 5% 95%
糟糕 3% 98%
...其他 2% 100%
Top-p = 0.9时:
步骤1:按概率从高到低排序(已经排好了)
步骤2:累加概率,直到达到0.9(90%)
真好 35% → 累积35%
不错 25% → 累积60%
很好 20% → 累积80%
还行 10% → 累积90% ← 达到90%,停止
步骤3:只从这4个词中采样
候选集:【真好、不错、很好、还行】
步骤4:在这4个词中,按原始概率采样(会重新归一化概率,使它们的概率加起来等于1)
Top-p = 0.5时:
只取累积概率到50%的词:
真好 35% → 累积35%
不错 25% → 累积60% ← 超过50%了
实际候选集:【真好、不错】
具体以实现为准:有的实现只保留达到阈值前的词"真好",有的实现会连同刚越过阈值的词"不错"一起保留。
Top-p = 1.0时:
取所有词(等于没限制)
这两个方法都控制采样,但方式不同:
① Temperature:
Temperature调整所有词的概率,低温时强化高概率词、压制低概率词,高温时拉平概率分布。
② Top-p:
Top-p只选择"头部"的词,低p值时只考虑最可能的几个词,高p值时考虑更多词。
Temperature:固定地调整分布。
→ 不管概率分布情况,调整方式都一样
Top-p:动态地选择候选集
→ 如果模型很确定:候选集小
→ 如果模型不确定:候选集大
例子:
情况1:模型很确定
"这部电影___"
很好 90% ← 模型非常确定
不错 5%
其他 5%Top-p=0.9:只考虑"很好"(因90%就达到阈值了)
情况2:模型不确定
"未来科技会___"
发展 15% ← 模型不太确定
进步 12%
突破 11%
...很多词概率都差不多Top-p=0.9:会考虑前10多个词(因为需要很多词才能累积到90%)
这种"动态性"是Top-p的优势:当模型确定时保持确定性,当模型不确定时允许探索。
p = 0.1:极度保守
只考虑最顶端的词
效果接近Temperature=0
p = 0.9:常用平衡点
ChatGPT的常见默认值
保留大部分合理选项
过滤掉很不可能的词
p = 0.95-1.0:更多创造力
考虑几乎所有词
但仍过滤掉极不可能的词(如果p<1)
实际上,很多系统(GPT5、Qwen、DeepSeek)的API都允许同时设置两者。
那么当他们同时使用时,Temperature与Top-p执行顺序是怎样的?具体来说,Temperature在Top-p之前执行吗?还是Top-p在Temperature之前执行?
以下是执行步骤:
可以看到Temperature的调整是在Top-p前面。
Tip
确实可以同时使用Temperature和Top-p,但OpenAI的建议:
"一般只调一个,要么Temperature要么Top-p,不建议同时调"
下一节,我们将探讨一个深刻的问题:为什么AI需要随机性?以及不同任务的最佳参数设置建议。
| 中文 | English | 音标 | 说明 |
|---|---|---|---|
| 核采样 | Nucleus Sampling | /ˈnjuːkliəs ˈsɑːmplɪŋ/ | 从累计概率达到 p 的动态“核”中采样的解码策略(Top-p) |
| 阈值 | Threshold | /ˈθreʃhəʊld/ | 触发某种行为或满足某种条件的临界值 |
| 累积概率 | Cumulative Probability | /ˈkjuːmjələtɪv ˌprɒbəˈbɪləti/ | 按顺序叠加的概率和 |
| 候选集 | Candidate Set | /ˈkændɪdət set/ | 采样时实际进入随机选择的词的集合 |
| 归一化 | Renormalize | /ˌriːˈnɔːməlaɪz/ | 对筛选后的候选词概率重新调整使其和为 1 |
| 未可靠尾部 | Unreliable Tail | /ʌnrɪˈlaɪəbl teɪl/ | 概率分布的低概率区域,容易产生乱码或不相干词 |
| 解码策略 | Decoding Strategy | /diːˈkəʊdɪŋ ˈstrætədʒi/ | 从模型概率分布生成最终 Token 序列的方法 |
| 光束搜索 | Beam Search | /biːm sɜːtʃ/ | 同时保留多条候选路径的最大化解码方法 |
OpenAI 官方建议"Temperature 和 Top-p 一般只调一个,不建议同时调整"。请从采样机制和工程可解释性两个角度,分析这条建议背后的道理。另外,试着举一个例外场景——在什么情况下,同时精细调整两者反而是合理的? (思维题)
本题无需提交、无对错判定;需要时可点击「查看答案」展开参考答案;若有解析会一并展示。